package br.ucb.rest.negocio.impl;

import java.util.HashMap;
import java.util.Map;

import javax.persistence.EntityManager;

import org.apache.log4j.Logger;

import br.ucb.rest.negocio.AbstractBusinessObject;
import br.ucb.rest.persistencia.dao.GenericDAO;
import br.ucb.rest.persistencia.vo.GarcomVO;

public class GarcomBOS extends AbstractBusinessObject {
	private static GarcomBOS instance;
	private Logger logger = Logger.getLogger(GarcomBOS.class);
	
	private GarcomBOS() {
		super();
		logger.info("Singleton instanciado com sucesso!");
	}
	
	public static GarcomBOS getInstance() {
		if (instance == null) {
			instance = new GarcomBOS();
		}
		return instance;
	}
	
	public GarcomVO recuperarPorNumeroGarcom(Integer numeroGarcom) {
		EntityManager em = emf.createEntityManager();
		GenericDAO dao = GenericDAO.getInstance(em);
		try {
			Map<String, Object> parametros = new HashMap<String, Object>(1);
			parametros.put("numeroGarcom", numeroGarcom);
			
			return (GarcomVO) dao.namedQueryResultadoUnico("GarcomVO.recuperarPorNumero", parametros);
			
			
		}catch (Exception e) {
			logger.error("Ocorreu um erro ao buscar registros no banco de dados!", e);
			return null;
		}finally {
			GenericDAO.liberarInstancia();
			em.close();
		}
		
	}
	
	public String recuperarNome (Integer numeroGarcom) {
		EntityManager em = emf.createEntityManager();
		GenericDAO dao = GenericDAO.getInstance(em);
		try {
			
			Map<String, Object> parametros = new HashMap<String, Object>(1);
			parametros.put("numeroGarcom", numeroGarcom);
			
			return (String) dao.namedQueryResultadoUnico("GarcomVO.recuperarNome", parametros);
			
		}catch (Exception e) {
			logger.error("Ocorreu um erro ao buscar registros no banco de dados!", e);
			return null;
		}finally {
			GenericDAO.liberarInstancia();
			em.close();
		}
	}
	
}
